package com.hospital.workstation.service;

import com.hospital.common.core.domain.R;
import com.hospital.workstation.domain.ElectronicMonitorTwoInfo;
import com.hospital.workstation.domain.vo.ElectronicMonitorTwoInfoVo;
import com.hospital.workstation.domain.bo.ElectronicMonitorTwoInfoBo;
import com.hospital.common.core.page.TableDataInfo;
import com.hospital.common.core.domain.PageQuery;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Collection;
import java.util.List;

/**
 * B表 药品不良反应/事件报告表Service接口
 *
 * @author hospital
 * @date 2024-05-07
 */
public interface IElectronicMonitorTwoInfoService {

    /**
     * 查询B表 药品不良反应/事件报告表
     */
    ElectronicMonitorTwoInfoVo queryById(Long id);

    /**
     * 查询B表 药品不良反应/事件报告表列表
     */
    TableDataInfo<ElectronicMonitorTwoInfoVo> queryPageList(ElectronicMonitorTwoInfoBo bo, PageQuery pageQuery);

    /**
     * 查询B表 药品不良反应/事件报告表列表
     */
    List<ElectronicMonitorTwoInfoVo> queryList(ElectronicMonitorTwoInfoBo bo);

    /**
     * 新增B表 药品不良反应/事件报告表
     */
    R<Void> insertByBo(ElectronicMonitorTwoInfoBo bo);

    /**
     * 修改B表 药品不良反应/事件报告表
     */
    Boolean updateByBo(ElectronicMonitorTwoInfoBo bo);

    /**
     * 校验并批量删除B表 药品不良反应/事件报告表信息
     */
    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);

    /**
     * 根据患者流水号查询B表信息
     *
     * @param medicalRecordNo 患者流水号
     * @return
     */
    R<ElectronicMonitorTwoInfoVo> queryMonitorTwoInfo(Integer medicalRecordNo);

    /**
     * 检测表流水号判重
     *
     * @param monitorRecordNo 检测表流水号
     * @return
     */
    R<Boolean> isExistMonitorRecordNo(Integer monitorRecordNo);

    /**
     * 驳回
     *
     * @param bo
     * @return
     */
    R<Void> reject(ElectronicMonitorTwoInfoBo bo);

    /**
     * 导出PDF B表
     * @param response
     * @param ids
     */
    void exportFile(HttpServletResponse response, Long[] ids) throws IOException;
}
